package com.axcc.srvaxcc.controller;

import com.axcc.srvaxcc.service.UserService;
import com.axcc.svraxcc.entitys.Credential;
import com.axcc.svraxcc.entitys.CriteriaQuery;
import com.axcc.svraxcc.entitys.User;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author gian
 */
@Controller("userController")
public class UserController {

    @Autowired
//    private UserService userService;
    private static Logger log = LoggerFactory.getLogger(UserController.class);

//    @RequestMapping("/usuarios/index")
//    public ModelAndView index() {
//        ModelAndView mav = new ModelAndView("usuarios/index");
//        List<User> usuarios = userService.buscarTodos();
//        CriteriaQuery criterioBusqueda = new CriteriaQuery();
//        mav.addObject("usuarios", usuarios);
//        mav.addObject("criterioBusqueda",criterioBusqueda);
//        return mav;
//    }
//    
//    @RequestMapping(value = "/usuarios/new", method = RequestMethod.GET)
//    public ModelAndView newUsuario() {
//        ModelAndView mav = new ModelAndView("usuarios/new");
//        User usuario = new User();
//        mav.getModelMap().put("usuario", usuario);
//        return mav;
//    }
//
//    @RequestMapping(value = "/usuarios/new", method = RequestMethod.POST)
//    public String createUsuario(@ModelAttribute("usuario")User usuario, SessionStatus status) {    
//        userService.insertar(usuario);
//        status.setComplete();
//
//        return "redirect:/pages/usuarios/index";
//        
//    }
//    
//    @RequestMapping(value = "/usuarios/edit", method = RequestMethod.GET)
//    public ModelAndView editUsuario(@RequestParam("id")Integer id) {    
//        ModelAndView mav = new ModelAndView("usuarios/edit");
//        User usuario = userService.buscar(id);
//        mav.getModelMap().put("usuario", usuario);
//        return mav;        
//    }
//    
//    @RequestMapping(value="/usuarios/edit", method=RequestMethod.POST)
//    public String update(@ModelAttribute("usuario") User usuario, SessionStatus status) {
//        userService.actualizar(usuario);
//        status.setComplete();
//        return "redirect:/pages/usuarios/index";
//    }
//    
//    @RequestMapping("/usuarios/delete")
//    public ModelAndView delete(@RequestParam("id")Integer id)
//    {
//        ModelAndView mav = new ModelAndView("redirect:/pages/usuarios/index");
//        User usuario = userService.buscar(id);
//        userService.eliminar(usuario);
//        return mav;
//    }
    
    @RequestMapping("/usuarios/login")
    public ModelAndView login() {
        ModelAndView mav = new ModelAndView("usuarios/login");
        Credential credential = new Credential();
        mav.getModelMap().put("credential", credential);
        return mav;
    }    
    
//    @RequestMapping(value = "/usuarios/autenticar", method=RequestMethod.POST)
//    public String autenticar(@ModelAttribute("credential") Credential credential,HttpServletRequest request) {
//        if (userService.autenticar(credential.getCorreo(), credential.getPassword())) {
//            request.getSession().setAttribute("credential",credential);
//            return "redirect:/pages/usuarios/index";
//        }
//        return "redirect:/pages/usuarios/login";
//    }
//    
//    @RequestMapping("/usuarios/logout")
//    public String logout(HttpServletRequest request) {
//        request.getSession().invalidate();
//        return "redirect:/pages/usuarios/login";
//    }        
//    
//    
//    @RequestMapping(value = "/usuarios/buscar", method=RequestMethod.POST)
//    public ModelAndView buscar(@ModelAttribute("criterioBusqueda") CriteriaQuery criterio, SessionStatus status) {
//        ModelAndView mav = new ModelAndView("usuarios/resultadoBusqueda");
//        log.info("resultado = " + userService.buscarPorNombre(criterio.getNombre()).size());
//        mav.getModel().put("resultado",userService.buscarPorNombre(criterio.getNombre()));
//        return mav;
//    }
    
}
